#include<stdio.h>
#include<unistd.h>
#include<signal.h>

void printfpending(sigset_t *pending)
{
    //打印pending信号集的内容(前31位)
    for(int i = 1;i<=31;++i)
    {
        if(sigismember(pending,i)) printf("1 ");
        else printf("0 ");
    }
    printf("\n");
}

int main()
{
    //1.创建set和oset，注意初始化
    sigset_t set,oldset;
    sigemptyset(&set);
    sigemptyset(&oldset);
    //2.将二号信号放入set中，并且阻塞信号2
    sigaddset(&set,2);
    sigprocmask(SIG_SETMASK,&set,&oldset);
    //3.一个空的set
    sigset_t pending;
    sigemptyset(&pending);
    //4.死循环打印pending
    while(1)
    {
        //在程序死循环运行时按ctrl+c触发信号2.
        sigpending(&pending);
        printfpending(&pending);
        sleep(1);
    }
    return 0;
}